GitHub Organizationのロールを整理してみた
GitHubの組織(Organization)では、以下のように様々なレベルでロールが登場し、頭が混乱したので、ロールの種類と始め方について整理してみました。
- 組織に割り当てるロール :オーナー/メンバー
- チームメンバーを管理できるロール :メンテナー
- レポジトリに割り当てるロール :リード/ライト/トリアージ/メインテイン/アドミン
なお、GitHubのアカウントは以下の3種類があります
- ユーザー
- 組織
- エンタープライズ
本記事では、GitHub Enterpriseではない、一般的な組織(Organization)アカウントを対象に説明します。
組織レベルのロール
組織に紐づく代表的なロールとして、所有者(owner) と メンバー(member) があります。
組織に個人ユーザーを招待するときや既存ユーザーに対して、これらのロールのいずれかを割り当てることができます
所有者(owner)
所有者は、組織に関するあらゆる操作が可能な特権ユーザーです。冗長化のために、必ず2名以上の所有者をアサインしましょう。
メンバー(member)
メンバーはデフォルトのユーザーです。後述するように、レポジトリごとにメンバー単位でロールを与えたり、メンバーが所属するチーム単位でロールを与えることが可能です。
高度なロール
組織の権限管理をより高度に行いたい場合、以下のロールを利用できます。
- モデレーター(moderator) : レポジトリへの貢献・コメントを管理
- 支払いマネージャー(billing manager) : 支払い関連を管理
- セキュリティマネージャー(security manager) : セキュリティを管理(パブリック・ベータ)
ロールと認可の組み合わせの詳細は、次のドキュメントの表"Permissions for organization roles"にまとまっています。
Roles in an organization - GitHub Docs
チームレベルのロール
メンバーはチームの単位で管理でき、チームの親子関係を作ることもできます。
メンバー単位ではなく、チーム単位でロールを割り振ることで管理負担を軽減したり、チームの単位でメンション(@github/design
)することもできるので、チームを活用しましょう。
チームに紐づくロールとして メンテナー(maintaner) があり、メンバーの追加・削除や子チームの作成ができます。このロールを活用し、組織のオーナーロールの一部権限を委譲しましょう。
レポジトリレベルのロール
レポジトリに紐づくロール として以下があり、個人、または、チームに対して割り当てられます
- 読み取り(Read) : プロジェクトの表示またはディスカッションを行う、コードを書かないコントリビューターにお勧めします
- トリアージ(Triage) : issues、ディスカッション、pull request を予防的に管理する必要があるが Write アクセス権は必要ない共同作成者にお勧めします
- 書き込み(Write) : プロジェクトに積極的にプッシュするコントリビューターにお勧めします
- 保守(Maintain) :リポジトリを管理する必要があるが、機密または破壊的なアクションへのアクセス権は不要なプロジェクト マネージャーにお勧めします
- 管理者(Admin) : セキュリティの管理やリポジトリの削除などの機密および破壊的なアクションを含む、プロジェクトへのフル アクセス権が必要な方にお勧めします
まずはWriteとAdminの2つのロールから始めましょう。
組織のオーナーは組織配下のレポジトリに対して任意の操作を行えるため、オーナーにAdminロールをアサインする必要はありません。
ロールと認可の組み合わせの詳細は、次のドキュメントの表"Permissions for each role"にまとまっています。
GitHub Organizationのロールの始め方
GitHub Organizationのロール運用のはじめの一歩についてまとめます。
- Organizationに2名以上のオーナーロールを設定
- メンバーはチーム単位で管理
- チームにはメンバー管理や子チーム管理を行えるメンテナー・ロールを設定し、オーナー権限を委譲
- レポジトリにはチームの単位でロールを付与し、まずはAdminとWriteの2ロールから始める
- オーナーは任意の操作をできるので、レポジトリレベルのロール付与は不要